(make_temp_name): Handle multibyte prefixes.
authorStefan Monnier <monnier@iro.umontreal.ca>
Sat, 7 Aug 2004 20:57:19 +0000 (20:57 +0000)
committerStefan Monnier <monnier@iro.umontreal.ca>
Sat, 7 Aug 2004 20:57:19 +0000 (20:57 +0000)
src/ChangeLog
src/fileio.c

index d1d33a4695a4e358636b96ab05d7266e37b9d284..39e7b2e273885729dbce2a0d7a125b19c0ee3f9f 100644 (file)
@@ -1,3 +1,7 @@
+2004-08-07  Stefan Monnier  <monnier@iro.umontreal.ca>
+
+       * fileio.c (make_temp_name): Handle multibyte prefixes.
+
 2004-08-06  Luc Teirlinck  <teirllm@auburn.edu>
 
        * keyboard.c (syms_of_keyboard) <overriding-terminal-local-map>:
index c417dcdf33999d14a09916df329f967d93e9bdc7..a05b1cb8340099ad11ae1ef6e4365f11fd2bcafd 100644 (file)
@@ -886,7 +886,7 @@ make_temp_name (prefix, base64_p)
      int base64_p;
 {
   Lisp_Object val;
-  int len;
+  int len, clen;
   int pid;
   unsigned char *p, *data;
   char pidbuf[20];
@@ -921,8 +921,10 @@ make_temp_name (prefix, base64_p)
 #endif
     }
 
-  len = SCHARS (prefix);
-  val = make_uninit_string (len + 3 + pidlen);
+  len = SBYTES (prefix); clen = SCHARS (prefix);
+  val = make_uninit_multibyte_string (clen + 3 + pidlen, len + 3 + pidlen);
+  if (!STRING_MULTIBYTE (prefix))
+    STRING_SET_UNIBYTE (val);
   data = SDATA (val);
   bcopy(SDATA (prefix), data, len);
   p = data + len;